package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.EngineerLevel;
import com.shrcl.engineerprocess.domain.MonthlyLevelCost;
import com.shrcl.engineerprocess.domain.impl.EngineerLevelSalaryImpl;
import com.shrcl.engineerprocess.domain.proxy.EngineerLevelSalaryProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;

@EntityImplementation(implementBy = EngineerLevelSalaryImpl.class)
public interface EngineerLevelSalary extends IModelObject {
  public abstract EngineerLevel getLevel();
  
  public abstract EngineerLevelSalary setLevel(final EngineerLevel level);
  
  public abstract Collection<MonthlyLevelCost> getMonthlyLevelCost();
  
  public abstract EngineerLevelSalary addtoMonthlyLevelCost(final MonthlyLevelCost monthlyLevelCost);
  
  public abstract EngineerLevelSalary setMonthlyLevelCost(final Iterable<MonthlyLevelCost> monthlyLevelCost);
  
  public abstract EngineerLevelSalary removeFromMonthlyLevelCost(final MonthlyLevelCost monthlyLevelCost);
  
  public abstract EngineerLevelSalary removeAllMonthlyLevelCost();
  
  public abstract void updateCost(final Date mon);
  
  public abstract Double getLatestAvgCost();
  
  public abstract EngineerLevelSalaryProxy toProxy();
}
